/**
* 项目名称：tv   
* 类名称：LinkDB   
* 类描述：   
* 创建人：Issac   
* 创建时间：2011-7-9 下午11:08:29   
* 修改人：Issac   
* 修改时间：2011-7-9 下午11:08:29   
* 修改备注：   
* @version 
 */
package com.tv.crawler;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;

import com.cityoneyes.util.Util;
import com.tv.bean.Program;

/**
 * @ClassName: LinkDB
 * @Description: 用来保存已经访问过 Url 和待访问的 Url 的类
 * @author issac2009@vip.qq.com
 * @date 2011-7-9 下午11:08:29
 */
public class LinkDB {
	//已访问的 url 集合
	private static Set<String> visitedUrl = new HashSet<String>();
	//待访问的 url 集合
	private static Queue<String> unVisitedUrl = new Queue<String>();
	
	//节目url
	public static Queue<String> unVisitedTVUrl = new Queue<String>();

	public void initUnVisitedTVUrl(){
		//get properties
		InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("init.properties");   
		Properties p = new Properties();   
		try {   
		   p.load(inputStream);   
		} catch (IOException e1) {   
		   e1.printStackTrace();   
		}   
		String path = p.getProperty("website.src.tv");
		
		BufferedReader br;
		String str = "";
		
		try {
			br = new BufferedReader(new InputStreamReader(
					new FileInputStream(new File(path + "tv.txt"))));
			
			while((str = br.readLine()) != null){
				unVisitedTVUrl.enQueue(str);
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		
	} 
	
	public static Queue<String> getUnVisitedUrl() {
		return unVisitedUrl;
	}

	public static void addVisitedUrl(String url) {
		visitedUrl.add(url);
	}

	public static void removeVisitedUrl(String url) {
		visitedUrl.remove(url);
	}

	public static String unVisitedUrlDeQueue() {
		return unVisitedUrl.deQueue();
	}

	// 保证每个 url 只被访问一次
	public static void addUnvisitedUrl(String url) {
		if (url != null && !url.trim().equals("") && !visitedUrl.contains(url)
			&& !unVisitedUrl.contians(url))
			unVisitedUrl.enQueue(url);
	}
	
	// 网易电视节目专用，保证每个 url 只被访问一次
	public static void addUnvisitedTVUrl(String url) {
		if (url != null && !url.trim().equals("") && !visitedUrl.contains(url)
			&& !unVisitedUrl.contians(url))
			//contails tv url
			if (unVisitedTVUrl.contians(url)){
				unVisitedUrl.enQueue(url);
			}
	}

	public static int getVisitedUrlNum() {
		return visitedUrl.size();
	}

	public static boolean unVisitedUrlsEmpty() {
		return unVisitedUrl.empty();
	}
}
